ARM NEON 汇编与intrinsics编程 您所在的位置:网站首页 1320 armv8 neon解码器 ARM NEON 汇编与intrinsics编程

ARM NEON 汇编与intrinsics编程

2023-08-31 02:54| 来源: 网络整理| 查看: 265

1 简介ARM NEON编程主要有两种最常用的方式手写汇编和intrinsics。本文将对比NEON汇编与NEON intrinsics编程的优缺点。

2 NEON汇编与intrinsicsNEON汇编与intrinsics各有优缺点:

NEON 汇编NEON intrinsic性能对于指定平台,汇编总是呈现最好性能。现在的编译器已经能得到媲美手工汇编的性能。可移植性Arm v7-A/v8-A平台 具有不同的汇编格式。即使在Arm v8-A平台,汇编程序可能也需要针对Cortex A53/A57微架构做出不同调整,才能呈现最好性能。选择合适的编译器选项,一次编程即可以很容易实现跨平台并针对该平台微架构调整性能,例如Arm v7-A Cortex A9/A7/A15和Arm v8-A Cortex A53/A57。可维护性相比C语言,较难编程,可读性较差跟C语言类似,比较容易编程与维护

但实际情况远远比这些复杂很多,特别是涉及到ARM v7-A/v8-A跨平台的时候。下面我们结合实例做一些更深入的分析。

2.1 编程对于初学者来说,intrinsics比较易学易用。但是对于有汇编经验的开发者来说,可能更熟悉NEON汇编编程,切换到intrinsics反倒需要有个适应过程。下文列出了实际开发中的一些问题。

2.1.1 指令灵活性从指令使用角度来说,汇编指令比intrinsics指令更灵活,主要体现在数据加载/存储上,比如下例:

Intrinsics指令

加载数据到一个64位寄存器 vld1_s8/u8/s16/u16/s32…etc加载数据到一个128位寄存器vld1q_s8/u8/s16/u16/s32…etcARM v7-A汇编VLD1 { Dd}, [Rn] VLD1 { Dd, D(d+1) }, [Rn] VLD1 { Dd, D(d+1), D(d+2)}, [Rn] VLD1 { Dd, D(d+1), D(d+2), D(d+3) }, [Rn]ARM v8-A汇编LD1 { .


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有